C----------------------------------------------------------------------------

C Module name: structure content drawer

C Author: Toby Howard

C Function: This module implements the structure content drawer.

C Dependencies:

C External function list: 

C Internal function list: 

C Hashtables used: "structureid", "label".

C Modification history : (Version), (Date), (Name), (Description).

C 1.0, ????, Toby Howard, First version.

C 1.1, 15th July 1988, Steve Larkin, Modified to work with VAX Phigs.

C 2.0, 27th August 1991, Gareth Williams, Translated to C.

C----------------------------------------------------------------------------

       SUBROUTINE ptkf_structcontent(wsid, stid, firstel, lastel, 
& elemptr, font, error)
C /*
C ** \parambegin
C ** \param{INTEGER}{wsid}{workstation identifier}{IN}
C ** \param{INTEGER}{stid}{structure identifier}{IN}
C ** \param{INTEGER}{firstel}{first element in range}{IN}
C ** \param{INTEGER}{lastel}{last element in range}{IN}
C ** \param{INTEGER}{elemptr}{element pointer}{IN}
C ** \param{INTEGER}{font}{text font}{IN}
C ** \param{INTEGER}{error}{error code}{OUT}
C ** \paramend
C ** \blurb{This function inserts a diagram of the contents of the structure
C ** {\tt stid} in the currently open structure at the current editing 
C ** position. The diagram consists of a table of elements represented
C ** by rectangles and labelled with element type and number. The table
C ** has a heading with the format:
C ** {\tt "structure N "name" (M elements)"}
C ** where N is the structure identifier, name is the structure name
C ** extracted from the "structureid" hashtable and M is the total
C ** number of elements in the structure.}
C */
       INTEGER wsid, stid, firstel, lastel, elemptr, font, error
       external ptk_structcontent !$PRAGMA C(ptk_structcontent)

       call ptk_structcontent(%val(wsid), %val(stid), %val(firstel), 
& %val(lastel), %val(elemptr), %val(font), error)

       RETURN
       END

       SUBROUTINE ptkf_inqstructcontentrange(contentstid, firstel, 
& lastel, err)
C /*
C ** \parambegin
C ** \param{INTEGER}{contentstid}{content structure identifier}{IN}
C ** \param{INTEGER}{firstel}{element pointer}{OUT}
C ** \param{INTEGER}{lastel}{element pointer}{OUT}
C ** \param{INTEGER}{err}{error indicator}{OUT}
C ** \paramend
C ** \blurb{This function may be used to obtain the element range 
C ** which appears in the structure content diagram.}
C */
       INTEGER contentstid, firstel, lastel, err
       external ptk_inqstructcontentrange 
& !$PRAGMA C(ptk_inqstructcontentrange)

       call ptk_inqstructcontentrange(%val(contentstid), firstel, 
& lastel, err)

       RETURN
       END

       SUBROUTINE ptkf_setstructcontentelemptr(contentstid, elemptr)
C /*
C ** \parambegin
C ** \param{INTEGER}{contentstid}{content structure identifier}{IN}
C ** \param{INTEGER}{elemptr}{element pointer}{IN}
C ** \paramend
C ** \blurb{This function draws an arrow pointing the element {\tt elemptr}
C ** in the structure content diagram.}
C */
       INTEGER contentstid, elemptr
       external ptk_setstructcontentelemptr 
& !$PRAGMA C(ptk_setstructcontentelemptr)

       call ptk_setstructcontentelemptr(%val(contentstid), 
& %val(elemptr))

       RETURN
       END

       SUBROUTINE ptkf_inqstructcontentelemptr(contentstid, elemptr,
& err)
C /*
C ** \parambegin
C ** \param{INTEGER}{contentstid}{content structure identifier}{IN}
C ** \param{INTEGER}{elemptr}{element pointer}{OUT}
C ** \param{INTEGER}{err}{error indicator}{OUT}
C ** \paramend
C ** \blurb{This function may be used to obtain the element number pointed
C ** to by the element arrow in the structure content diagram.}
C */
       INTEGER contentstid, elemptr, err
       external ptk_inqstructcontentelemptr 
& !$PRAGMA C(ptk_inqstructcontentelemptr)

       call ptk_inqstructcontentelemptr(%val(contentstid), 
& elemptr, err)

       RETURN
       END

C end of stct.f

